package com.gdut.huayan.entity.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gdut.huayan.utils.StringUtils;
import com.gdut.huayan.validation.NumRange;
import com.gdut.huayan.validation.group.GroupAdd;
import com.gdut.huayan.validation.group.GroupUpdate;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@TableName("t_conversion")
public class Conversion {

    /**
     * 唯一编号，也是回执编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Null(groups = {GroupAdd.class})
    @NotNull(groups = {GroupUpdate.class})
    private Long id;

    @TableField(exist = false)
    private String number;

    /**
     * ConversionActivity的id
     */
    @NotNull(groups = {GroupAdd.class},message = "皈依活动得的d不能为空")
    @Null(groups = {GroupUpdate.class},message = "无法修改所属活动")
    private Long activityId;

    @Null(groups = {GroupUpdate.class},message = "无法修改用户id")
    private Long userId;

    /**
     * 1、三皈 2、五戒
     */
    @NotNull(groups = {GroupAdd.class},message = "type不能为空")
    @Null(groups = {GroupUpdate.class},message = "无法修改皈依类型")
    @NumRange(max=2,min=1,message = "type:1、三皈 2、五戒")
    private Integer type;

    /**
     * 真实姓名
     */
    @NotBlank(groups = {GroupAdd.class},message = "name不能为空")
    private String name;

    /**
     * 法名：释 +
     * conversion_activity.frontName +
     * 真实姓名最后一个字
     */
    @Null(message = "conversionName应为null")
    private String conversionName;

    /**
     * 1-男；2-女
     */
    @NumRange(max = 2,min = 1,message = "性别：1-男；2-女")
    private Integer sex;

    private Integer age;

    private String phone;

    /**
     * 电话归属地，+86中国大陆为空
     */
    private String phoneCountry;

    /**
     * 创建时间
     */
    @Null(message = "创建时间应为空")
    private LocalDateTime createTime;

    /**
     * 籍贯
     */
    private String nativePlace;

    /**
     * 家庭住址
     */
    private String address;

    /**
     * 个人照片
     */
    private Long imageFileId;

    /**
     * 状态信息：
     * 1、申请中 2、未参加皈依 3、已参加皈依 4、拒绝皈依
     */
    @Null(groups = {GroupAdd.class})
    @NumRange(min = 1, max = 4, message = "status:1、申请中 2、未参加皈依 3、已参加皈依 4、拒绝皈依")
    private Integer status;

    public String getNumber(){
        if(this.id != null){
            return StringUtils.beDigits(Long.toString(this.id,36)).toUpperCase();
        }
        return null;
    }
}
